package cn.bearspark.merit.provider.dao.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

/**
 * 积功德记录的数据映射对象
 *
 * @author f
 */
@Mapper
public interface AccMeritMapper {

    /**
     * 统计指定用户给指定模块下的指定数据的积功德记录条数
     *
     * @param userId       指定的用户 id
     * @param moduleCode   指定模块的枚举值
     * @param moduleDataId 指定数据的 id
     * @return 指定用户给指定模块下的指定数据的积功德记录条数
     */
    @Select("SELECT COUNT(*) FROM t_acc_merit WHERE user_id = #{userId} AND " +
            "module_code = #{moduleCode} AND module_data_id = #{moduleDataId}")
    int countAccMerit(long userId, int moduleCode, long moduleDataId);

    /**
     * 记录指定用户向指定模块的指定数据积过功德
     *
     * @param userId       指定的用户 id
     * @param moduleCode   指定模块的枚举值
     * @param moduleDataId 指定模块数据的主键 id
     */
    @Insert("INSERT INTO t_acc_merit (user_id, module_code, module_data_id) " +
            "VALUES (#{userId}, #{moduleCode}, #{moduleDataId})")
    void insert(long userId, int moduleCode, long moduleDataId);
}
